
        <html>
			<head>
			     <title>Mousejack测试指南 - 三好学生</title>
				 <meta http-equiv="content-type" content="text/html; charset=UTF-8">
			</head>
			<body>
				<h1>原文地址:<a href="http://drops.wooyun.org/tips/13444">http://drops.wooyun.org/tips/13444</a></h1>
				
      <p>
        <h1>0x00 前言</h1>

<hr />

<p>近日，Bastille的研究团队发现了一种针对蓝牙键盘鼠标的攻击，攻击者可以利用漏洞控制电脑操作，他们将此攻击命名为MouseJack。 攻击者仅需要在亚马逊上以60美元购买设备，改造之后即可对百米范围内存在漏洞的蓝牙无线键鼠进行劫持，向受害计算机输入任意指令。相信对此感兴趣的人有很多，所以我根据其公布的信息购买了相应设备来进行测试，现将测试经验分享给大家。</p>

<!--more-->

<p><img src="http://static.wooyun.org//drops/20160304/2016030408265081947p1.png" alt="Alt text" /></p>

<h1>0x01 简介</h1>

<hr />

<p>软件工程师马克纽林说：“利用假冒的无线电脑鼠标和键盘可以从100米的距离利用便携式外围设备入侵笔记本电脑，这些设备来自至少七家大厂商，包括罗技、微软、亚马逊”。 Bastille研究团队发现了针对13种鼠标和键盘的攻击并向各厂商报告了漏洞，其中有些厂商已经发布了补丁。</p>

<h3>攻击原理：</h3>

<p>由于没有身份验证机制，所以适配器无法识别出数据包是由鼠标发送的还是由攻击者发送的。</p>

<p>因此，攻击者可以伪装成一个鼠标发送自己的数据或者点击数据包以欺骗适配器</p>

<h1>0x02 测试设备</h1>

<hr />

<p>相信好多小伙伴已经在着手购买设备了，但是去国外的亚马逊以60美元购买设备有点不现实，所以我提前给大家探了路，在国内就可以用不到200元的价格购入设备，避免多花冤枉钱</p>

<p><strong>测试设备：</strong></p>

<p><strong>1、</strong>Crazyradio 2.4Ghz nRF24LU1+ USB radio dongle(&lt;￥200)</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408265228970p2.png" alt="Alt text" /></p>

<p><strong>2、</strong>DELL KM714 无线键盘鼠标套装（&lt;￥400）</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408265377060p3.png" alt="Alt text" /></p>

<p><strong>注：</strong></p>

<p>以下链接展示了存在漏洞的设备：<br />
https://www.bastille.net/affected-devices</p>

<p><strong>3、</strong>我的测试设备</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408265567064p4.jpg" alt="Alt text" /></p>

<h1>0x03 实际测试</h1>

<hr />

<p><strong>测试环境：</strong></p>

<pre><code>本机系统：   Win7
虚拟机系统： Kali 1.0
</code></pre>

<p><strong>测试流程：</strong></p>

<h3>1、Kali下搭建软件环境</h3>

<pre><code>#!bash
sudo apt-get install sdcc binutils python python-pip
sudo pip install -U pip
sudo pip install -U -I pyusb
sudo pip install -U platformio
</code></pre>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408265741133p5.png" alt="Alt text" /></p>

<h3>2、插上U盘</h3>

<p>下载代码<a href="https://github.com/RFStorm/mousejack">https://github.com/RFStorm/mousejack</a>，执行：</p>

<pre><code>#!bash
cd mousejack-master/
make
</code></pre>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408265811638p6.png" alt="Alt text" /></p>

<p>执行：</p>

<pre><code>#!bash
make install
</code></pre>

<p>如图，操作失败</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408270052945p7.png" alt="Alt text" /></p>

<h3>3、查找解决方法</h3>

<p>在此处获得提示，需要更新Crazyradio 固件：<br />
<a href="https://github.com/RFStorm/mousejack/issues/2">https://github.com/RFStorm/mousejack/issues/2</a></p>

<p>更新方法可参照：<br />
<a href="https://wiki.bitcraze.io/projects:crazyradio:programming">https://wiki.bitcraze.io/projects:crazyradio:programming</a></p>

<h3>4、更新Crazyradio 固件</h3>

<p>下载代码https://github.com/bitcraze/crazyradio-firmware，执行：</p>

<pre><code>#!bash
cd crazyradio-firmware
python usbtools/launchBootloader.py
</code></pre>

<p>如图</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408270188589p8.png" alt="Alt text" /></p>

<p>到<a href="https://github.com/bitcraze/crazyradio-firmware/releases">https://github.com/bitcraze/crazyradio-firmware/releases</a><br />
下载cradio-pa-0.53.bin，放在crazyradio-firmware文件下，执行：</p>

<pre><code>#!bash
python usbtools/nrfbootload.py flash cradio-pa-0.53.bin
</code></pre>

<p>如图，成功更新Crazyradio 固件</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408270346138p9.png" alt="Alt text" /></p>

<h3>5、再次make install</h3>

<p>执行</p>

<pre><code>#!bash
cd mousejack-master/
make install
</code></pre>

<p>如图，发现依然失败</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408270442568p10.png" alt="Alt text" /></p>

<p>接着执行：</p>

<pre><code>#!bash
lsusb -d 1915:7777 -v | grep bcdDevice
</code></pre>

<p>此时也无法查看固件版本</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408270691617p11.png" alt="Alt text" /></p>

<h3>6、再次查找原因</h3>

<p>原来需要把U盘拔下来重新插进去</p>

<p>再次执行代码查看固件版本</p>

<pre><code>#!bash
lsusb -d 1915:7777 -v | grep bcdDevice
</code></pre>

<p>如图成功</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408270750849p12.png" alt="Alt text" /></p>

<p>再次执行</p>

<pre><code>#!bash
make install
</code></pre>

<p>成功，如图</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408270894881p13.png" alt="Alt text" /></p>

<h3>7、再次拔掉重新插</h3>

<p>根据上面更新固件成功的代码提示"Please unplug your dongle or breakout board and plug it back in",再次拔掉重新插入U盘</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408271010940p14.png" alt="Alt text" /></p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408271121909p15.png" alt="Alt text" /></p>

<p>如图，此时本机的Windows系统无法识别U盘，这就导致虚拟机系统也无法加载U盘，无法进行后续的测试</p>

<h3>8、查找解决方法</h3>

<p>原来需要在Windows上安装Crazyradio固件的驱动</p>

<p><strong>（1）</strong>参考<a href="https://wiki.bitcraze.io/doc:crazyradio:install_win7">https://wiki.bitcraze.io/doc:crazyradio:install_win7</a></p>

<p>手动下载驱动包，在设备管理器中找到未识别的设备，手动更新驱动，但是依然无法识别</p>

<p><strong>（2）</strong>参考<a href="https://wiki.bitcraze.io/doc:crazyradio:install_windows_zadig">https://wiki.bitcraze.io/doc:crazyradio:install&#95;windows&#95;zadig</a></p>

<p>下载zadig来识别U盘进行更新驱动</p>

<p>但发现zadig也无法识别U盘，因此这种方法也失效</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408271351233p16.png" alt="Alt text" /></p>

<h3>9、分析问题</h3>

<p>此时Windows无法识别U盘，有如下两种假设：</p>

<p><strong>（1）</strong>Windows系统下的Crazyradio固件驱动存在问题，所以无法识别，因此导致虚拟机系统无法加载U盘（但是已经用了2种更新驱动的方法还是无法识别，会不会是刷坏了呢）<br />
<strong>（2）</strong>U盘被刷坏（存在这种可能，固件更新的说明里有提到，不是100%安全），有询问研究过crazyradio file的小伙伴，也倾向于U盘被刷坏</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408271538507p17.png" alt="Alt text" /></p>

<h3>10、解决问题</h3>

<p>为了测试能够继续进行，改变了思路决定更换测试环境，在其他系统上也许能够绕过这个难题。</p>

<p><strong>（1）</strong>ubuntu</p>

<p>感兴趣的小伙伴可以深入测试</p>

<p><strong>（2）</strong>osx</p>

<p>使用osx系统测试，也许能够成功识别U盘，这也就是为什么最终采用了osx系统测试</p>

<p>测试发现osx系统能够成功识别，如图</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408271641486p18.jpg" alt="Alt text" /></p>

<p>依然是在虚拟机里面接着测试，这次虚拟机中的系统使用的是kali2.0，顺便也就研究了如果成功刷好U盘，在其他系统上使用需要哪些环境.</p>

<p><strong>经测试得出初步结论：</strong></p>

<p><strong>如果刷好U盘，只需要在新系统上下载Github代码，即可进行接下来的测试</strong></p>

<p>简单的测试图如下</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408271791442p19.jpg" alt="Alt text" /></p>

<h3>11、更多测试</h3>

<p>连接上设备Dell KM714，对比给出的硬件id</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408271999596p20.png" alt="Alt text" /></p>

<p>右图为购买的Dell KM714显示的硬件id</p>

<p><strong>（1）scanner</strong></p>

<p>执行</p>

<pre><code>#!bash
cd mousejack-master/
./nrf24-scanner.py -c {1..5}
</code></pre>

<p>运行后，会捕获附近所有设备的数据包</p>

<p>这时我们对KM714鼠标和键盘操作，命令行会立即回显捕获到的数据包</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408272031796p21.jpg" alt="Alt text" /></p>

<p>可找到Dell KM714的地址为 08:D0:4F:28:02</p>

<p><strong>（2）sniffer</strong></p>

<p>确定了Dell KM714的地址，就可以对其进行定向捕获 执行</p>

<pre><code>#!bash
./nrf24-sniffer.py -a 08:D0:4F:28:02
</code></pre>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408272234760p22.jpg" alt="Alt text" /></p>

<p><strong>（3）network mapper（Denial of Service）</strong></p>

<p>执行</p>

<pre><code>#!bash
./nrf24-network-mapper.py -a 08:D0:4F:28:02
</code></pre>

<p>可拦截地址为08:D0:4F:28:02的设备发出的数据包，并对最后一位做修改，此操作可使设备失效，无法对电脑发送控制指令</p>

<p><img src="http://static.wooyun.org//drops/20160304/2016030408272423624p23.jpg" alt="Alt text" /></p>

<p>如图，执行完脚本后，此时Dell KM714的鼠标键盘失去响应，无法对电脑进行控制，只有重新插拔接收器才能恢复正常。</p>

<p><strong>注：</strong></p>

<ol>
<li>每次Ctrl+c结束脚本后需要重新插拔Usb才能继续测试，否则会提示超时，脚本执行失败</li>
<li>购买的Crazyradio 2.4Ghz nRF24LU1+ USB radio dongle开发板 原厂会刷入Crazyradio固件（如果没有店家一般也会帮忙刷入），发光管显示绿光代表功能正常，但对其固件进行升级后，发光管会显示红灯，看似功能故障，但其实只要命令行输出为<code>Verification succeded!</code>即代表升级成功，发光管会显示红灯的原因在于对固件进行升级操作后，并未对发光管进行设置，因此显示红色。 板子上的灯虽然是红色，但不影响功能。</li>
</ol>

<h1>0x04 小结</h1>

<hr />

<p>以上分享了我对mousejack的测试心得，记录的比较完整，希望对你的测试研究有所帮助。</p>

<p>当然，本文仅仅是对其公布的github代码进行初步测试，更多深入测试也在进行当中。如果需要实现劫持鼠标键盘，发送键盘消息，可以尝试修改github中的python代码。</p>

<p>如果你有更好的想法或是遇到了新的问题，欢迎和我交流：）</p>

<p><strong>本文由三好学生原创并首发于乌云drops，转载请注明</strong></p>      </p>
    
			</body>
		</html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          